package com.qdxwx.data.service.course;


import com.qdxwx.common.page.PageRequest;
import com.qdxwx.models.course.Course;
import com.qdxwx.models.course.CourseDTO;
import com.qdxwx.models.course.CourseQuery;

import java.util.List;

/**
 * Course接口
 * Qdx NetSchool Platform
 * @author qdxwx
 * @updateTime 2022/5/25
 * @description
 */
public interface CourseService {

	int insert(Course course);

	int delete(int id);

	int update(Course course);

	void updateView(int courseId);

	void updateBuy(int courseId);

	Course get(int courseId);

	//通过ID，查询课程数据返回DTO
	CourseDTO getDTO(int courseId);

	//通过ID，查询课程数据返回DTO
	CourseDTO getMyCourse(long userId, int courseId);

	//查询相关课程
	List<CourseDTO> getInterfixList(Course course, int limit);

	List<Course> getList(CourseQuery course, PageRequest page);

	int count(CourseQuery course);

	//分页查询我的课程列表
	List<CourseDTO> getMyCourseList(CourseQuery courseQuery, PageRequest page);

	int countMyCourse(CourseQuery query);

	List<CourseDTO> getDTOListByAlbumId(Integer albumId);

	//获得项目专业限制的所有课程
	List<Course> getCouponSubjectCourse(Integer categoryId, String courseIds);

	//后台根据条件获取套餐下课程详细信息
	List<CourseDTO> getPackageList(Course course, PageRequest page);

	int getPackageCount(Course course);

	//以课程id获取所有父套餐
	List<CourseDTO> getPackageParents(int courseId);

	//获取课程套餐的详细课程列表
	List<CourseDTO> getListByPackageIds(List<Integer> ids);

	//获取课程套餐的详细课程列表
	List<CourseDTO> getListByPackageId(int id);

	//给直播set最近开始和结束直播的时间
	void setNearTime(List<CourseDTO> courseDTOS);

	/*判断用户是否有某课程的会员*/
	boolean hasMember(Integer courseId, Long userId);

	/*订单的课程集合*/
	List<Course> getListByOrderNo(String orderNo);

	/* 1课程 2套餐（备用）*/
	List<Course> getListByShopCart(Long userId, Integer type);

	/* 更新总时长*/
	int updateTotalDurations(int courseId, int totals);
}